﻿package dbase;


import core.*;
import cont.*;
import scrn.*;


// ================================================== Класс работы с хранилищами
public final class DbMan {

private RecordStore rms = null; // Хранилище


//================================================================ Инициализация
public DbMan() {

	Mess.m("DbMan.init", "=====");
} // Не используется


//============================================================ Закрыть хранилище
public void close() {

	if (rms != null) {
		try {
			rms.closeRecordStore();
		} catch (Exception e) {
			Mess.m("DbMan.close", "Не могу закрыть хранилище", e);
		}
	}
	rms = null;
}


//======================================================= Получить запись из RMS
public byte[] getRecord(int recordNum) {

	try {
		return rms.getRecord(recordNum);
	} catch (Exception e) {
		Mess.err("DbMan.getRecord", "Не могу прочитать запись №" + recordNum, e);
		return null;
	}
}


//=========================================== Загрузить цветовые схемы контактов
public OneCol[] loadSchOne() {

	// TODO Сотворить реальную загрузку и сохранение цветовых схем
	OneCol[] oneCols = new OneCol[1];
	oneCols[0] = new OneCol();
	return oneCols;
}


//============================================== Загрузить цветовые схемы комнат
public RoomCol[] loadSchRoom() {

	RoomCol[] roomCols = new RoomCol[1];
	roomCols[0] = new RoomCol();
	return roomCols;
}


//==================================================================== Загрузить
public byte[] load(int what, int recordNum) {

	if (open(what, false)) {
		return this.getRecord(recordNum);
	} else {
		return null;
	}
}


//============================================================ Открыть хранилище
public boolean open(int rmsType, boolean fCreate) {

	String name = null;
	boolean fOk = false;

	try {
		if (rms == null) {
			name = RMS.name[rmsType];
			if (name != null) {
				rms = RecordStore.openRecordStore(name, fCreate);
				if (rms != null) {
					fOk = true;
				}
			}
		} else {
			if (rms.getName().equals(RMS.name[rmsType])) {
				fOk = true;
			} else {
				fOk = false;
			}
		}

	} catch (Exception e) {
		Mess.m("DbMan.open", "Хранилище не открыто или не существует");
	}

	return fOk;

}


//============================================================= Сохранить запись
public boolean save(int what, byte[] bytes, int recordNum) {

	if (open(what, true)) {
		this.setRecord(recordNum, bytes);
		this.close();
		return true;
	} else {
		return false;
	}
}


//===================================================== Сохранить цветовые схемы
public void saveColSch() {

}


//============================================ Сохранить информацию пользователя
public void saveOneInfo(OneInfo oneInfo, int userNum) {

}


//======================================================= Задать значение записи
public void setRecord(int recordNum, byte[] bytes) {

	try {
		if (rms.getNextRecordID() == recordNum) {
			rms.addRecord(bytes, 0, bytes.length);
		} else {
			rms.setRecord(recordNum, bytes, 0, bytes.length);
		}
	} catch (Exception e) {
		Mess
				.m("DbMan.setRecord", "Не могу задать значение записи №" + recordNum, e);
	}
}


//======================================================================== Выход
public void exit() {

}

}
